Microservices আর্কিটেকচার ব্যবহারের ক্ষেত্রে, Apache ActiveMQ একটি শক্তিশালী মেসেজ ব্রোকার হিসেবে কাজ করে, যা বিভিন্ন মাইক্রোসার্ভিসের মধ্যে অ্যাসিনক্রোনাস মেসেজিং বা যোগাযোগ সহজ করে। Microservices মডেলে বিভিন্ন ছোট, স্বাধীনভাবে কার্যকরী সার্ভিস থাকে এবং এই সার্ভিসগুলোর মধ্যে মেসেজিং ব্যবস্থার জন্য অ্যাপাচি অ্যাকটিভএমকিউ বেশ কার্যকরী। এটি একাধিক সার্ভিসের মধ্যে মেসেজ পাঠানোর এবং গ্রহণ করার মাধ্যমে সিস্টেমের স্কেলেবিলিটি এবং কার্যক্ষমতা বৃদ্ধি করে।
এখানে, আমরা দেখব কিভাবে অ্যাপাচি অ্যাকটিভএমকিউ-কে Spring Boot ভিত্তিক Microservices এর মধ্যে ইন্টিগ্রেট করা যায় এবং মেসেজ প্রেরণ এবং গ্রহণের জন্য সেটআপ করা যায়।
Microservices হলো একটি আর্কিটেকচারাল স্টাইল যেখানে একটি অ্যাপ্লিকেশনকে ছোট ছোট স্বাধীন সার্ভিসে ভাগ করা হয়। এই সার্ভিসগুলো একে অপরের সাথে যোগাযোগ করতে পারে REST API, gRPC, SOAP, JMS (Java Message Service) বা অন্যান্য পদ্ধতির মাধ্যমে।
Apache ActiveMQ মেসেজিং সিস্টেমের মাধ্যমে Microservices-এর মধ্যে কমিউনিকেশন অ্যাসিনক্রোনাসভাবে করা হয়, যা মাইক্রোসার্ভিসগুলোর মধ্যে ডিকাপলিং এবং স্বাধীনভাবে স্কেল করা সম্ভব করে তোলে। এর মাধ্যমে মাইক্রোসার্ভিসগুলো একে অপরের সাথে মেসেজ শেয়ার করে বা ইভেন্ট ড্রিভেন আর্কিটেকচার তৈরি করে।
Spring Boot-এ ActiveMQ ইন্টিগ্রেশন খুবই সহজ এবং সরল। Spring Boot এর জন্য spring-boot-starter-activemq
ডিপেনডেন্সি ব্যবহার করা হয়, যা অ্যাপাচি অ্যাকটিভএমকিউ-এর সঙ্গে যোগাযোগের জন্য প্রয়োজনীয় সকল কনফিগারেশন এবং টুলস সরবরাহ করে।
প্রথমে, Spring Initializr ব্যবহার করে একটি নতুন Spring Boot প্রজেক্ট তৈরি করুন। প্রজেক্টের জন্য নিম্নলিখিত ডিপেনডেন্সি যুক্ত করুন:
Spring Boot অ্যাপ্লিকেশনে ActiveMQ ইন্টিগ্রেট করতে, pom.xml
ফাইলে নিচের ডিপেনডেন্সি যোগ করুন:
<dependencies>
<!-- Spring Boot Starter Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot Starter JMS for ActiveMQ -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
</dependencies>
এখন, application.properties ফাইলে ActiveMQ ব্রোকারের কনফিগারেশন যোগ করতে হবে:
# ActiveMQ কনফিগারেশন
spring.activemq.broker-url=tcp://localhost:61616
spring.activemq.user=admin
spring.activemq.password=admin
spring.activemq.in-memory=false
এখানে:
Spring Boot অ্যাপ্লিকেশন থেকে ActiveMQ-তে সংযোগ স্থাপনের জন্য একটি কনফিগারেশন ক্লাস তৈরি করুন:
import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.connection.CachingConnectionFactory;
import org.springframework.jms.core.JmsTemplate;
@Configuration
public class ActiveMQConfig {
@Bean
public ActiveMQConnectionFactory connectionFactory() {
return new ActiveMQConnectionFactory("tcp://localhost:61616");
}
@Bean
public CachingConnectionFactory cachingConnectionFactory(ActiveMQConnectionFactory connectionFactory) {
return new CachingConnectionFactory(connectionFactory);
}
@Bean
public JmsTemplate jmsTemplate(CachingConnectionFactory cachingConnectionFactory) {
return new JmsTemplate(cachingConnectionFactory);
}
}
ActiveMQ কিউতে মেসেজ প্রেরণের জন্য একটি প্রোডিউসার তৈরি করুন:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Component;
@Component
public class MessageProducer {
@Autowired
private JmsTemplate jmsTemplate;
public void sendMessage(String message) {
jmsTemplate.convertAndSend("testQueue", message);
}
}
এখানে:
এখন, একটি কনজিউমার তৈরি করুন, যা কিউ থেকে মেসেজ গ্রহণ করবে:
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
@Component
public class MessageConsumer {
@JmsListener(destination = "testQueue")
public void receiveMessage(String message) {
System.out.println("Received message: " + message);
}
}
এখানে:
Spring Boot অ্যাপ্লিকেশন স্টার্ট করার জন্য @SpringBootApplication
অ্যানোটেশন সহ একটি মূল ক্লাস তৈরি করুন:
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.beans.factory.annotation.Autowired;
@SpringBootApplication
public class ActiveMQApplication implements CommandLineRunner {
@Autowired
private MessageProducer messageProducer;
public static void main(String[] args) {
SpringApplication.run(ActiveMQApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
messageProducer.sendMessage("Hello, ActiveMQ from Microservices!");
}
}
এখানে:
MessageProducer
ব্যবহার করে মেসেজ ActiveMQ কিউতে পাঠাবে।Spring Boot অ্যাপ্লিকেশন চালানোর জন্য নিম্নলিখিত কমান্ডটি রান করুন:
mvn spring-boot:run
এটি Spring Boot অ্যাপ্লিকেশন চালু করবে এবং মেসেজ প্রোডিউসার ActiveMQ কিউতে একটি মেসেজ পাঠাবে। মেসেজ কনজিউমার কিউ থেকে মেসেজ গ্রহণ করবে এবং কনসোলে প্রিন্ট করবে।
Microservices আর্কিটেকচারে ActiveMQ ব্যবহার করার সুবিধাগুলি:
Apache ActiveMQ এবং Spring Boot এর ইন্টিগ্রেশন মাইক্রোসার্ভিস আর্কিটেকচারে মেসেজ ভিত্তিক যোগাযোগ ব্যবস্থা তৈরিতে সহায়ক। ActiveMQ ব্রোকারের মাধ্যমে, মাইক্রোসার্ভিসগুলো একে অপরের সাথে মেসেজ শেয়ার করতে পারে এবং অ্যাসিনক্রোনাসভাবে কাজ করতে পারে, যার ফলে সিস্টেমটি আরও স্কেলেবল এবং রিলায়েবল হয়। Spring Boot অ্যাপ্লিকেশনটি সহজে ActiveMQ-কে ইন্টিগ্রেট করতে পারে এবং মেসেজ প্রোডিউসার এবং কনজিউমার তৈরি করতে সক্ষম হয়।
common.read_more